Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid r7rs-benchmarks timeout #1054

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Hamayama
Copy link
Contributor

@Hamayama Hamayama commented Jul 12, 2024

  • 最近更新された r7rs-benchmarks の結果で、
    cpstak と parsing のタイムアウト(5分以上)が発生していたため調べました。

  • 情報元:
    https://ecraven.github.io/r7rs-benchmarks/

  • ひとつ前の結果:
    https://web.archive.org/web/20221104225919/https://ecraven.github.io/r7rs-benchmarks/

  • 自分の環境 (Windows) で確認したところ、
    Gauche 0.9.14 と 0.9.15 とでは、実行時間が以下のように増加していました。

    ./bench gauche cpstak
        178s  ==>  237s (133%)
    ./bench gauche parsing
        296s  ==>  370s (125%)
    
  • このため、git bisect で、0.9.15 と 0.9.14 の間を確認したところ、
    次のコミットが見つかりました。
    89d270c
    ( Explicitly start marker threads )

  • 変更箇所をコメントアウトしたところ、以下のように改善しました。

    ./bench gauche cpstak
        162s
    ./bench gauche parsing
        263s
    

<補足情報>

  • https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AGC
    の下の方に、過去の GC の設定の情報があります。(古いですが…)
    そこに、THREAD_LOCAL_ALLOC を設定すると、シングルスレッドアプリケーションでは、
    20%程度速度が低下したというような記述があります。

  • 別の情報として、事前に

    export GC_INITIAL_HEAP_SIZE=100M
    

    を実行すると、変更箇所のコメントアウト前の実行時間は、

    ./bench gauche cpstak
        117s
    ./bench gauche parsing
        160s
    

    に減少しました。また、変更箇所のコメントアウト後の実行時間は、

    ./bench gauche cpstak
        105s
    ./bench gauche parsing
        134s
    

    に減少しました。
    これは以前、
    Gauche-r7rs-bench-GM
    で調べた結果に近くなっています。
    ただ、メモリを消費するし、効果があるプログラムは一部だけのようでした。

@shirok
Copy link
Owner

shirok commented Jul 12, 2024

これは困りものですね。多分大抵のアプリケーションではparallel mark使いたいと思うんですが…
オプションで切り替えるのは多分煩雑で、ユーザが気にせずともいい感じに動いて欲しいですね。
ちょっといいバランスを調査してみます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants